]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
Add events before and after stage paint
authorOwen W. Taylor <otaylor@fishsoup.net>
Sun, 9 May 2010 17:24:13 +0000 (13:24 -0400)
committerOwen W. Taylor <otaylor@fishsoup.net>
Fri, 21 May 2010 03:41:46 +0000 (23:41 -0400)
Add performance events:

 clutter.stagePageStart
 clutter.stagePageDone

to track frame repaints.

https://bugzilla.gnome.org/show_bug.cgi?id=618189

src/shell-global.c

index 84f7716b74cfbb834378ce6ec4a3b730f9f80503..bc99b43ad1f949fe78af51bb00dc31c75a398be8 100644 (file)
@@ -3,6 +3,7 @@
 #include "config.h"
 
 #include "shell-global-private.h"
+#include "shell-perf-log.h"
 #include "shell-wm.h"
 
 #include "display.h"
@@ -501,6 +502,22 @@ global_stage_notify_height (GObject    *gobject,
                   NULL);
 }
 
+static void
+global_stage_before_paint (ClutterStage *stage,
+                           ShellGlobal  *global)
+{
+  shell_perf_log_event (shell_perf_log_get_default (),
+                        "clutter.stagePaintStart");
+}
+
+static void
+global_stage_after_paint (ClutterStage *stage,
+                          ShellGlobal  *global)
+{
+  shell_perf_log_event (shell_perf_log_get_default (),
+                        "clutter.stagePaintDone");
+}
+
 void
 _shell_global_set_plugin (ShellGlobal  *global,
                           MutterPlugin *plugin)
@@ -520,6 +537,20 @@ _shell_global_set_plugin (ShellGlobal  *global,
   g_signal_connect (stage, "notify::height",
                     G_CALLBACK (global_stage_notify_height), global);
   update_screen_size (global);
+
+  g_signal_connect (stage, "paint",
+                    G_CALLBACK (global_stage_before_paint), global);
+  g_signal_connect_after (stage, "paint",
+                          G_CALLBACK (global_stage_after_paint), global);
+
+  shell_perf_log_define_event (shell_perf_log_get_default(),
+                               "clutter.stagePaintStart",
+                               "Start of stage page repaint",
+                               "");
+  shell_perf_log_define_event (shell_perf_log_get_default(),
+                               "clutter.stagePaintDone",
+                               "End of stage page repaint",
+                               "");
 }
 
 void